/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fisica;

import hibernate.Sesion;
import hibernate.objeto.Interconsulta;
import java.util.Vector;
import org.hibernate.Query;
import presentacion.utilidad.Paginador;

/**
 *
 * @author Gonzalo
 */
public class InterconsultaFisica extends CapaFisica {

    /**
     * Retorna el objeto Interconsulta según el id.
     *
     * @param idInterconsulta  El id de la interconsulta
     *
     * @return El objeto Interconsulta consultado, null si
     * no existe
     */
    public static Interconsulta getInterconsultaPorId(
            int idInterconsulta) {
        Query q = Sesion.sesion.createQuery(
                "from Interconsulta " +
                "where idInterconsulta = " +
                idInterconsulta
                );

        return (Interconsulta) getObjeto(q);
    }

    /**
     * Retorna el vector de objetos Interconsulta según la
     * enfermedad y diagnostico.
     *
     * @param idEnfermedadYDiagnosticoAmbulatorio El id de la enfermedad con su respectivo
     * diagnostico consultado
     * @return El vector de objetos Interconsulta, null si no existe
     */
    public static Vector<Interconsulta>
            getVectorInterconsultaEnfermedadYDiagnosticoAmbulatorio(
            int idEnfermedadYDiagnosticoAmbulatorio) {
        Query q = Sesion.sesion.createQuery(
                "from Interconsulta i " +
                "where i.enfermedadYDiagnosticoAmbulatorio.idEnfermedadYDiagnosticoAmbulatorio = " +
                idEnfermedadYDiagnosticoAmbulatorio
                + " order by i.fechaInterconsulta desc, i.horaInterconsulta desc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Interconsulta según el idPaciente en
     * atención ambulatoria.
     *
     * @param idPaciente  El id del paciente a consultar
     *
     * @return El vector de objetos Interconsulta, null si no existe
     */
    public static Vector<Interconsulta>
            getVectorInterconsultaAmbulatorioPorIdPaciente(int idPaciente) {
        Query q = Sesion.sesion.createQuery(
                "select i " +
                "from Interconsulta i " +
                "where i.enfermedadYDiagnosticoAmbulatorio.paciente.idPaciente = " +
                idPaciente
                + " order by i.fechaInterconsulta desc, i.horaInterconsulta desc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Interconsulta según el diagnostico
     * de internación.
     *
     * @param idDiagnosticoYTriageInternacion El id del diagnóstico de internación
     * @return El vector de objetos Interconsulta, null si no existe
     */
    public static Vector<Interconsulta>
            getVectorInterconsultaPorIdDiagnosticoYTriageInternacion(
            int idDiagnosticoYTriageInternacion) {
        Query q = Sesion.sesion.createQuery(
                "from Interconsulta i " +
                "where i.diagnosticoYTriageInternacion.idDiagnosticoYTriageInternacion = " +
                idDiagnosticoYTriageInternacion
                + " order by i.fechaInterconsulta desc, i.horaInterconsulta desc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }

    /**
     * Retorna el vector de objetos Interconsulta según el idPaciente para
     * internaciones.
     *
     * @param idPaciente  El id del paciente a consultar
     *
     * @return El vector de objetos Interconsulta, null si no existe
     */
    public static Vector<Interconsulta>
            getVectorInterconsultaInternacionPorIdPaciente(int idPaciente) {
        Query q = Sesion.sesion.createQuery(
                "select i " +
                "from Interconsulta i " +
                "where i.diagnosticoYTriageInternacion.paciente.idPaciente = " +
                idPaciente
                + " order by i.fechaInterconsulta desc, i.horaInterconsulta desc");

        Paginador.paginar(q);

        return getVectorObjetos(q);
    }
}
